home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Art / I / Imagic.cpt / External Functions / Grid Source / XFunctions.c < prev    next >
Text File  |  1992-04-01  |  7KB  |  298 lines

  1. /**************************************************************************************************
  2.  *                    XFunctions.c
  3.  *
  4.  *            Written By: Brian Powell
  5.  *            (c) 1991, All Rights Reserved.
  6.  *
  7.  *            This contains all of the code responsible for calling routines within Imagic.  Imagic
  8.  *        sends an array of ProcPtr's to the external function which are then called here when the
  9.  *        programmer uses one of my library routines.  These are the routines.
  10.  *
  11.  *************************************************************************************************/
  12.  
  13. #include "XFunctionNumbers.h"
  14. #include "XFunctions.h"
  15.  
  16. /* External Globals */
  17. extern const ProcPtr         (*(**functions)());
  18.  
  19.  
  20. /* This is where all of the functions are held */
  21.  
  22. /**************************************************************************************************
  23.  *                                 I M A G E    U T I L I T I E S
  24.  *************************************************************************************************/
  25.  
  26. pascal ImageHandle NewBlankImage(name, xsize, ysize, visible, topleft, botright, projection)
  27.     StringPtr name;
  28.     int    xsize, ysize;
  29.     Boolean visible;
  30.     Point      *topleft;
  31.     Point      *botright;
  32.     short      projection;
  33. {
  34.     return ((ImageHandle)((functions[NEWBLANKIMAGE])(xsize, ysize, visible, name, topleft, 
  35.             botright, projection)));
  36. }
  37.  
  38. pascal ImageHandle CopyImage(image)
  39.     ImageHandle image;
  40. {
  41.     return ((ImageHandle)((functions[COPYIMAGE])(image)));
  42. }
  43. pascal void GetImageSize(image, x, y)
  44.     ImageHandle image;
  45.     int *x, *y;
  46. {
  47.     (functions[GETIMAGESIZE])(image, x, y);
  48. }
  49.  
  50. pascal Boolean BeginImageWork(image, NeedUndo)
  51.     ImageHandle image;
  52.     Boolean NeedUndo;
  53. {
  54.     if (image == NIL) return FALSE;
  55.     return((Boolean)(functions[BEGINIMAGEWORK])(image, NeedUndo));
  56. }
  57.  
  58. pascal void EndImageWork(image)
  59.     ImageHandle image;
  60. {
  61.     (functions[ENDIMAGEWORK])(image);
  62. }
  63.  
  64. pascal int GetPixVal(image, xloc, yloc)
  65.     ImageHandle image;
  66.     int xloc, yloc;
  67. {
  68.     return ((int)((functions[GETPIXVAL])(image, xloc, yloc)));
  69. }
  70.  
  71. pascal void SetPixVal(image, xloc, yloc, value)
  72.     ImageHandle image;
  73.     int xloc, yloc;
  74.     PixelVal value;
  75. {
  76.     (functions[SETPIXVAL])(image, xloc, yloc, value);
  77. }
  78.  
  79. pascal void GetPixLineVal(image, vals, line, x)
  80.     ImageHandle image;
  81.     PixelValPtr *vals;
  82.     int line, x;
  83. {
  84.     (PixelValPtr)(functions[GETPIXLINEVAL])(image, vals, line, x);
  85. }
  86.  
  87. pascal void SetPixLineVal(image, values, line, x)
  88.     ImageHandle image;
  89.     PixelValPtr values;
  90.     int line, x;
  91. {
  92.     (functions[SETPIXLINEVAL])(values, image, line, x);
  93. }
  94.  
  95. pascal void PixToScaledVal(image, values, newvals)
  96.     ImageHandle image;
  97.     PixelValPtr values;
  98.     ScaledValPtr *newvals;
  99. {
  100.     (functions[PIXTOSCALEDVAL])(image, values, newvals);
  101. }
  102.  
  103. pascal void ScaledValToPix(image, values, newvals)
  104.     ImageHandle image;
  105.     ScaledValPtr values;
  106.     PixelValPtr *newvals;
  107. {
  108.     (functions[SCALEDVALTOPIX])(image, values, newvals);
  109. }
  110.  
  111. pascal ImageHandle GetTopImage()
  112. {
  113.     return ((ImageHandle)((functions[GETTOPIMAGE])()));
  114. }
  115.  
  116. pascal StringPtr GetImageName(image)
  117.     ImageHandle image;
  118. {
  119.     return ((char *)(functions[GETIMAGENAME])(image));
  120. }
  121.  
  122. pascal void EraseImage(image)
  123.     ImageHandle image;
  124. {
  125.     (functions[ERASEIMAGE])(image);
  126. }
  127.  
  128. pascal void DisposImage(image)
  129.     ImageHandle image;
  130. {
  131.     (functions[DISPOSIMAGE])(image);
  132. }
  133.  
  134. pascal void GetImageGeography(image, topleft, botright, projection)
  135.     ImageHandle image;
  136.     Point        *topleft;
  137.     Point        *botright;
  138.     short        *projection;
  139. {
  140.     (functions[GETIMAGEGEOGRAPHY])(image, topleft, botright, projection);
  141. }
  142.  
  143. pascal void PixToLatLon(image, x, y, lat, lon)
  144.     ImageHandle    image;
  145.     int    x, y;
  146.     double    *lat, *lon;
  147. {
  148.     (functions[PIXTOLATLON])(image, x, y, lat, lon);
  149. }
  150.  
  151. pascal void LatLonToPix(image, lat, lon, x, y)
  152.     ImageHandle    image;
  153.     double lat, lon;
  154.     int    *x, *y;
  155. {
  156.     (functions[LATLONTOPIX])(image, lat, lon, x, y);
  157. }
  158.  
  159. pascal void CopyCTable(image, newimage)
  160.     ImageHandle image, newimage;
  161. {
  162.     (functions[COPYCTABLE])(image, newimage);
  163. }
  164.  
  165. /**************************************************************************************************
  166.  *                     U S E R   I N T E R F A C E    U T I L I T I E S
  167.  *************************************************************************************************/
  168.  
  169. pascal Boolean CreateProgressDialog(name, value)
  170.     StringPtr name;
  171.     int    value;
  172. {
  173.     return ((Boolean)((functions[CREATEPROGRESSDIALOG])(name, value)));
  174. }
  175.  
  176. pascal Boolean UpdateProgressDialog(value)
  177.     int value;
  178. {
  179.     return((Boolean)((functions[UPDATEPROGRESSDIALOG])(value)));
  180. }
  181.  
  182. pascal void DisposProgressDialog()
  183. {
  184.     (functions[DISPOSPROGRESSDIALOG])();
  185. }
  186.  
  187. pascal int CreateDialog(text, Label1, Label2, Label3, beep)
  188.     StringPtr    text, Label1, Label2, Label3;
  189.     Boolean beep;
  190. {
  191.     return ((int)((functions[CREATEDIALOG])(text, Label1, Label2, Label3, beep)));
  192. }
  193.  
  194. pascal void MessageDialog(title, beep)
  195.     StringPtr    title;
  196.     Boolean        beep;
  197. {
  198.     (functions[CREATEDIALOG])(title, (StringPtr)"Ok", NULL, NULL, beep);
  199. }
  200.  
  201. pascal ImageHandle **GetImageList(min, max, message, nFiles)
  202.     int min, max;
  203.     StringPtr message;
  204.     int *nFiles;
  205. {
  206.     return ((ImageHandle **)(functions[GETLISTOFIMAGES])(min, max, message, nFiles));
  207. }
  208.  
  209. pascal int GetVersion()
  210. {
  211.     return ((int)(functions[GETVERSION])());
  212. }
  213.  
  214. pascal Boolean TextFilter(theDialog, event, item)
  215.     DialogPtr    theDialog;
  216.     EventRecord    *event;
  217.     int            *item;
  218. {
  219.     return ((Boolean)(functions[TEXTFILTER])(theDialog, event, item));
  220. }
  221.  
  222. pascal void PlaceWindow(theWindow, x, y)
  223.     WindowPtr theWindow;
  224.     int          x,y;
  225. {
  226.     (functions[PLACEWINDOW])(theWindow, x, y);
  227. }
  228.  
  229. pascal void OutlineButton(theDialog, item)
  230.     DialogPtr    theDialog;
  231.     int            item;
  232. {
  233.     (functions[OUTLINEBUTTON])(theDialog, item);
  234. }
  235.  
  236. /**************************************************************************************************
  237.  *                 M E M O R Y   M A N A G E R    U T I L I T I E S
  238.  *************************************************************************************************/
  239.  
  240. pascal Handle CreateNewHandle(size)
  241.     Size size;
  242. {
  243.     return ((Handle)((functions[CREATENEWHANDLE])(size)));
  244. }
  245.  
  246. pascal Ptr CreateNewPtr(size)
  247.     Size size;
  248. {
  249.     return ((Ptr)((functions[CREATENEWPTR])(size)));
  250. }
  251.  
  252. pascal void DestroyHandle(theHandle)
  253.     Handle theHandle;
  254. {
  255.     (functions[DESTROYHANDLE])(theHandle);
  256. }
  257.  
  258. pascal void DestroyPtr(thePtr)
  259.     Ptr thePtr;
  260. {
  261.     (functions[DESTROYPTR])(thePtr);
  262. }
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275. /**************************************************************************************************
  276.  *                 NOT IMPLEMENTED...
  277.  *************************************************************************************************/
  278.  
  279. /* This is currently not implemented because the variable argument list uses the 
  280.  * registers to manipulate the data which is BAD, BAD for the XModules.  They rely
  281.  * on the registers to stay approximately the same, esp. A0 & A4.  This may be 
  282.  * implemented later.
  283.  *
  284.  *    pascal OSErr dialogprintf(char *fmt, ...)
  285.  *    {
  286.  *        char    string[400];
  287.  *        va_list    args;
  288.  *    
  289.  *        va_start(args, fmt);
  290.  *        vsprintf(string, fmt, args);
  291.  *        va_end(args);
  292.  *        CtoPstr(string);
  293.  *        return;
  294.  *        return ((functions[0])(string, "\pOk", NULL, NULL, TRUE));
  295.  *    }
  296.  *    
  297.  */
  298.